using UnityEngine;

public class FloorManager : MonoBehaviour
{
    [Tooltip("需要被管理和移动的玩家角色")]
    public Transform player;

    [Tooltip("将场景中用于组成地面的所有Plane拖到这里")]
    public Transform[] planes;


    // 单个Plane在Z轴上的长度
    private float planeLength;

    void Start()
    {
        // 检查是否设置了玩家
        if (player == null)
        {
            Debug.LogError("请在Inspector面板中设置玩家(Player)的Transform！");
            // 禁用此脚本以防止后续错误
            this.enabled = false;
            return;
        }

        // 检查是否设置了地板
        if (planes == null || planes.Length == 0)
        {
            Debug.LogError("请在Inspector面板中设置地面(Planes)数组！");
            this.enabled = false;
            return;
        }

        // 根据第一个Plane的Z轴缩放计算其实际长度 (Unity默认Plane是10个单位)
        planeLength = 86f;
    }

    void Update()
    {
        // 计算所有地板的总长度
        float totalLength = planes.Length * planeLength;

        // 根据您的要求，触发回收的距离是总长度的三分之一
        float triggerDistance = 10f;

        // 遍历每一个Plane
        foreach (Transform plane in planes)
        {
            // 检查玩家是否已经远远超过了这个Plane
            // 条件：玩家的Z坐标 > Plane的Z坐标 + 触发距离
            if (player.position.z > plane.position.z + triggerDistance)
            {
                // 将这个已经落在后面的Plane移动到整个队列的最前方
                Vector3 newPos = plane.position;
                // 将它的Z坐标增加“所有Plane的总长度”
                newPos.z += totalLength;
                plane.position = newPos;
            }
        }
    }
}